/*
  funciones para formatear numeros
  edu-ale 2021-06-11
*/

CREATE OR REPLACE FUNCTION public.get_nro_formateado(numeric, integer, character varying)
    RETURNS character varying
AS $BODY$
DECLARE
pNro			ALIAS FOR $1;
pDecimales		ALIAS FOR $2;
pCodValMon		ALIAS FOR $3;

BEGIN

-- Recibe: un numero con decimales, la cantidad de decimales a mostrar, la moneda
-- Devuelve: Un string con el numero formateado con separador de miles y el punto decimal (Toma el Locale de la base)
-- Existe una funcion homologa que llama a esta sin moneda y con dos decimales, poniendo siempre los decimales.
-- Ej: 123456.12 sera:  123.456,12
-- Ej de parametro en funcion TO_CHAR:   'FM999G999G999G999G990D00'

-- PARA PROBAR: select get_nro_formateado(123456.12, 2, 'LIBRAS')

RETURN CASE WHEN COALESCE(pCodValMon, '') = '' THEN '' ELSE pCodValMon || ' ' END ||
		TO_CHAR(pNro, 'FM999G999G999G999G990D' || REPEAT('0', pDecimales));

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100;
ALTER FUNCTION public.get_nro_formateado(numeric, integer, character varying) OWNER TO abacouser;

-- ================================================

CREATE OR REPLACE FUNCTION public.get_nro_formateado(numeric)
    RETURNS character varying
AS $BODY$
DECLARE
pNro			ALIAS FOR $1;

BEGIN

-- Recibe: un numero con decimales.
-- Devuelve: Un string con el numero formateado con separador de miles y dos decimales (Toma el Locale de la base)
-- Existe una funcion homologa que llama a esta sin moneda y con dos decimales, poniendo siempre los decimales.

RETURN get_nro_formateado(pNro, 2, '');

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE COST 100;
ALTER FUNCTION public.get_nro_formateado(numeric) OWNER TO abacouser;


-- ==================================
 SELECT aaVersion('457.02','457.01');
-- ==================================
